﻿/*
 Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
(function () {
  function b(a, b, c) {
    var h = n[this.id];
    if (h)
      for (
        var f = this instanceof CKEDITOR.ui.dialog.checkbox, e = 0;
        e < h.length;
        e++
      ) {
        var d = h[e];
        switch (d.type) {
          case 1:
            if (!a) continue;
            if (null !== a.getAttribute(d.name)) {
              a = a.getAttribute(d.name);
              f ? this.setValue('true' == a.toLowerCase()) : this.setValue(a);
              return;
            }
            f && this.setValue(!!d['default']);
            break;
          case 2:
            if (!a) continue;
            if (d.name in c) {
              a = c[d.name];
              f ? this.setValue('true' == a.toLowerCase()) : this.setValue(a);
              return;
            }
            f && this.setValue(!!d['default']);
            break;
          case 4:
            if (!b) continue;
            if (b.getAttribute(d.name)) {
              a = b.getAttribute(d.name);
              f ? this.setValue('true' == a.toLowerCase()) : this.setValue(a);
              return;
            }
            f && this.setValue(!!d['default']);
        }
      }
  }
  function c(a, b, c) {
    var h = n[this.id];
    if (h)
      for (
        var f = '' === this.getValue(),
          e = this instanceof CKEDITOR.ui.dialog.checkbox,
          d = 0;
        d < h.length;
        d++
      ) {
        var g = h[d];
        switch (g.type) {
          case 1:
            if (!a || ('data' == g.name && b && !a.hasAttribute('data')))
              continue;
            var m = this.getValue();
            f || (e && m === g['default'])
              ? a.removeAttribute(g.name)
              : a.setAttribute(g.name, m);
            break;
          case 2:
            if (!a) continue;
            m = this.getValue();
            if (f || (e && m === g['default']))
              g.name in c && c[g.name].remove();
            else if (g.name in c) c[g.name].setAttribute('value', m);
            else {
              var p = CKEDITOR.dom.element.createFromHtml(
                '\x3ccke:param\x3e\x3c/cke:param\x3e',
                a.getDocument()
              );
              p.setAttributes({ name: g.name, value: m });
              1 > a.getChildCount()
                ? p.appendTo(a)
                : p.insertBefore(a.getFirst());
            }
            break;
          case 4:
            if (!b) continue;
            m = this.getValue();
            f || (e && m === g['default'])
              ? b.removeAttribute(g.name)
              : b.setAttribute(g.name, m);
        }
      }
  }
  for (
    var n = {
        id: [{ type: 1, name: 'id' }],
        classid: [{ type: 1, name: 'classid' }],
        codebase: [{ type: 1, name: 'codebase' }],
        pluginspage: [{ type: 4, name: 'pluginspage' }],
        src: [
          { type: 2, name: 'movie' },
          { type: 4, name: 'src' },
          { type: 1, name: 'data' },
        ],
        name: [{ type: 4, name: 'name' }],
        align: [{ type: 1, name: 'align' }],
        'class': [
          { type: 1, name: 'class' },
          { type: 4, name: 'class' },
        ],
        width: [
          { type: 1, name: 'width' },
          { type: 4, name: 'width' },
        ],
        height: [
          { type: 1, name: 'height' },
          { type: 4, name: 'height' },
        ],
        hSpace: [
          { type: 1, name: 'hSpace' },
          { type: 4, name: 'hSpace' },
        ],
        vSpace: [
          { type: 1, name: 'vSpace' },
          { type: 4, name: 'vSpace' },
        ],
        style: [
          { type: 1, name: 'style' },
          { type: 4, name: 'style' },
        ],
        type: [{ type: 4, name: 'type' }],
      },
      k = 'play loop menu quality scale salign wmode bgcolor base flashvars allowScriptAccess allowFullScreen'.split(
        ' '
      ),
      l = 0;
    l < k.length;
    l++
  )
    n[k[l]] = [
      { type: 4, name: k[l] },
      { type: 2, name: k[l] },
    ];
  k = ['play', 'loop', 'menu'];
  for (l = 0; l < k.length; l++)
    n[k[l]][0]['default'] = n[k[l]][1]['default'] = !0;
  CKEDITOR.dialog.add('flash', function (a) {
    var l = !a.config.flashEmbedTagOnly,
      k = a.config.flashAddEmbedTag || a.config.flashEmbedTagOnly,
      h,
      f =
        '\x3cdiv\x3e' +
        CKEDITOR.tools.htmlEncode(a.lang.common.preview) +
        '\x3cbr\x3e\x3cdiv id\x3d"cke_FlashPreviewLoader' +
        CKEDITOR.tools.getNextNumber() +
        '" style\x3d"display:none"\x3e\x3cdiv class\x3d"loading"\x3e\x26nbsp;\x3c/div\x3e\x3c/div\x3e\x3cdiv id\x3d"cke_FlashPreviewBox' +
        CKEDITOR.tools.getNextNumber() +
        '" class\x3d"FlashPreviewBox"\x3e\x3c/div\x3e\x3c/div\x3e';
    return {
      title: a.lang.flash.title,
      minWidth: 420,
      minHeight: 310,
      onShow: function () {
        this.fakeImage = this.objectNode = this.embedNode = null;
        h = new CKEDITOR.dom.element('embed', a.document);
        var e = this.getSelectedElement();
        if (
          e &&
          e.data('cke-real-element-type') &&
          'flash' == e.data('cke-real-element-type')
        ) {
          this.fakeImage = e;
          var d = a.restoreRealElement(e),
            g = null,
            b = null,
            c = {};
          if ('cke:object' == d.getName()) {
            g = d;
            d = g.getElementsByTag('embed', 'cke');
            0 < d.count() && (b = d.getItem(0));
            for (
              var d = g.getElementsByTag('param', 'cke'), f = 0, l = d.count();
              f < l;
              f++
            ) {
              var k = d.getItem(f),
                n = k.getAttribute('name'),
                k = k.getAttribute('value');
              c[n] = k;
            }
          } else 'cke:embed' == d.getName() && (b = d);
          this.objectNode = g;
          this.embedNode = b;
          this.setupContent(g, b, c, e);
        }
      },
      onOk: function () {
        var e = null,
          d = null,
          b = null;
        this.fakeImage
          ? ((e = this.objectNode), (d = this.embedNode))
          : (l &&
              ((e = CKEDITOR.dom.element.createFromHtml(
                '\x3ccke:object\x3e\x3c/cke:object\x3e',
                a.document
              )),
              e.setAttributes({
                classid: 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000',
                codebase:
                  'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version\x3d6,0,40,0',
              })),
            k &&
              ((d = CKEDITOR.dom.element.createFromHtml(
                '\x3ccke:embed\x3e\x3c/cke:embed\x3e',
                a.document
              )),
              d.setAttributes({
                type: 'application/x-shockwave-flash',
                pluginspage: 'http://www.macromedia.com/go/getflashplayer',
              }),
              e && d.appendTo(e)));
        if (e)
          for (
            var b = {},
              c = e.getElementsByTag('param', 'cke'),
              f = 0,
              h = c.count();
            f < h;
            f++
          )
            b[c.getItem(f).getAttribute('name')] = c.getItem(f);
        c = {};
        f = {};
        this.commitContent(e, d, b, c, f);
        e = a.createFakeElement(e || d, 'cke_flash', 'flash', !0);
        e.setAttributes(f);
        e.setStyles(c);
        this.fakeImage
          ? (e.replace(this.fakeImage), a.getSelection().selectElement(e))
          : a.insertElement(e);
      },
      onHide: function () {
        this.preview && this.preview.setHtml('');
      },
      contents: [
        {
          id: 'info',
          label: a.lang.common.generalTab,
          accessKey: 'I',
          elements: [
            {
              type: 'vbox',
              padding: 0,
              children: [
                {
                  type: 'hbox',
                  widths: ['280px', '110px'],
                  align: 'right',
                  className: 'cke_dialog_flash_url',
                  children: [
                    {
                      id: 'src',
                      type: 'text',
                      label: a.lang.common.url,
                      required: !0,
                      validate: CKEDITOR.dialog.validate.notEmpty(
                        a.lang.flash.validateSrc
                      ),
                      setup: b,
                      commit: c,
                      onLoad: function () {
                        var a = this.getDialog(),
                          b = function (b) {
                            h.setAttribute('src', b);
                            a.preview.setHtml(
                              '\x3cembed height\x3d"100%" width\x3d"100%" src\x3d"' +
                                CKEDITOR.tools.htmlEncode(
                                  h.getAttribute('src')
                                ) +
                                '" type\x3d"application/x-shockwave-flash"\x3e\x3c/embed\x3e'
                            );
                          };
                        a.preview = a
                          .getContentElement('info', 'preview')
                          .getElement()
                          .getChild(3);
                        this.on('change', function (a) {
                          a.data && a.data.value && b(a.data.value);
                        });
                        this.getInputElement().on(
                          'change',
                          function () {
                            b(this.getValue());
                          },
                          this
                        );
                      },
                    },
                    {
                      type: 'button',
                      id: 'browse',
                      filebrowser: 'info:src',
                      hidden: !0,
                      style: 'display:inline-block;margin-top:14px;',
                      label: a.lang.common.browseServer,
                    },
                  ],
                },
              ],
            },
            {
              type: 'hbox',
              widths: ['25%', '25%', '25%', '25%', '25%'],
              children: [
                {
                  type: 'text',
                  id: 'width',
                  requiredContent: 'embed[width]',
                  style: 'width:95px',
                  label: a.lang.common.width,
                  validate: CKEDITOR.dialog.validate.htmlLength(
                    a.lang.common.invalidHtmlLength.replace(
                      '%1',
                      a.lang.common.width
                    )
                  ),
                  setup: b,
                  commit: c,
                },
                {
                  type: 'text',
                  id: 'height',
                  requiredContent: 'embed[height]',
                  style: 'width:95px',
                  label: a.lang.common.height,
                  validate: CKEDITOR.dialog.validate.htmlLength(
                    a.lang.common.invalidHtmlLength.replace(
                      '%1',
                      a.lang.common.height
                    )
                  ),
                  setup: b,
                  commit: c,
                },
                {
                  type: 'text',
                  id: 'hSpace',
                  requiredContent: 'embed[hspace]',
                  style: 'width:95px',
                  label: a.lang.flash.hSpace,
                  validate: CKEDITOR.dialog.validate.integer(
                    a.lang.flash.validateHSpace
                  ),
                  setup: b,
                  commit: c,
                },
                {
                  type: 'text',
                  id: 'vSpace',
                  requiredContent: 'embed[vspace]',
                  style: 'width:95px',
                  label: a.lang.flash.vSpace,
                  validate: CKEDITOR.dialog.validate.integer(
                    a.lang.flash.validateVSpace
                  ),
                  setup: b,
                  commit: c,
                },
              ],
            },
            {
              type: 'vbox',
              children: [
                { type: 'html', id: 'preview', style: 'width:95%;', html: f },
              ],
            },
          ],
        },
        {
          id: 'Upload',
          hidden: !0,
          filebrowser: 'uploadButton',
          label: a.lang.common.upload,
          elements: [
            {
              type: 'file',
              id: 'upload',
              label: a.lang.common.upload,
              size: 38,
            },
            {
              type: 'fileButton',
              id: 'uploadButton',
              label: a.lang.common.uploadSubmit,
              filebrowser: 'info:src',
              'for': ['Upload', 'upload'],
            },
          ],
        },
        {
          id: 'properties',
          label: a.lang.flash.propertiesTab,
          elements: [
            {
              type: 'hbox',
              widths: ['50%', '50%'],
              children: [
                {
                  id: 'scale',
                  type: 'select',
                  requiredContent: 'embed[scale]',
                  label: a.lang.flash.scale,
                  'default': '',
                  style: 'width : 100%;',
                  items: [
                    [a.lang.common.notSet, ''],
                    [a.lang.flash.scaleAll, 'showall'],
                    [a.lang.flash.scaleNoBorder, 'noborder'],
                    [a.lang.flash.scaleFit, 'exactfit'],
                  ],
                  setup: b,
                  commit: c,
                },
                {
                  id: 'allowScriptAccess',
                  type: 'select',
                  requiredContent: 'embed[allowscriptaccess]',
                  label: a.lang.flash.access,
                  'default': '',
                  style: 'width : 100%;',
                  items: [
                    [a.lang.common.notSet, ''],
                    [a.lang.flash.accessAlways, 'always'],
                    [a.lang.flash.accessSameDomain, 'samedomain'],
                    [a.lang.flash.accessNever, 'never'],
                  ],
                  setup: b,
                  commit: c,
                },
              ],
            },
            {
              type: 'hbox',
              widths: ['50%', '50%'],
              children: [
                {
                  id: 'wmode',
                  type: 'select',
                  requiredContent: 'embed[wmode]',
                  label: a.lang.flash.windowMode,
                  'default': '',
                  style: 'width : 100%;',
                  items: [
                    [a.lang.common.notSet, ''],
                    [a.lang.flash.windowModeWindow, 'window'],
                    [a.lang.flash.windowModeOpaque, 'opaque'],
                    [a.lang.flash.windowModeTransparent, 'transparent'],
                  ],
                  setup: b,
                  commit: c,
                },
                {
                  id: 'quality',
                  type: 'select',
                  requiredContent: 'embed[quality]',
                  label: a.lang.flash.quality,
                  'default': 'high',
                  style: 'width : 100%;',
                  items: [
                    [a.lang.common.notSet, ''],
                    [a.lang.flash.qualityBest, 'best'],
                    [a.lang.flash.qualityHigh, 'high'],
                    [a.lang.flash.qualityAutoHigh, 'autohigh'],
                    [a.lang.flash.qualityMedium, 'medium'],
                    [a.lang.flash.qualityAutoLow, 'autolow'],
                    [a.lang.flash.qualityLow, 'low'],
                  ],
                  setup: b,
                  commit: c,
                },
              ],
            },
            {
              type: 'hbox',
              widths: ['50%', '50%'],
              children: [
                {
                  id: 'align',
                  type: 'select',
                  requiredContent: 'object[align]',
                  label: a.lang.common.align,
                  'default': '',
                  style: 'width : 100%;',
                  items: [
                    [a.lang.common.notSet, ''],
                    [a.lang.common.left, 'left'],
                    [a.lang.flash.alignAbsBottom, 'absBottom'],
                    [a.lang.flash.alignAbsMiddle, 'absMiddle'],
                    [a.lang.flash.alignBaseline, 'baseline'],
                    [a.lang.common.alignBottom, 'bottom'],
                    [a.lang.common.alignMiddle, 'middle'],
                    [a.lang.common.right, 'right'],
                    [a.lang.flash.alignTextTop, 'textTop'],
                    [a.lang.common.alignTop, 'top'],
                  ],
                  setup: b,
                  commit: function (a, b, f, k, l) {
                    var h = this.getValue();
                    c.apply(this, arguments);
                    h && (l.align = h);
                  },
                },
                { type: 'html', html: '\x3cdiv\x3e\x3c/div\x3e' },
              ],
            },
            {
              type: 'fieldset',
              label: CKEDITOR.tools.htmlEncode(a.lang.flash.flashvars),
              children: [
                {
                  type: 'vbox',
                  padding: 0,
                  children: [
                    {
                      type: 'checkbox',
                      id: 'menu',
                      label: a.lang.flash.chkMenu,
                      'default': !0,
                      setup: b,
                      commit: c,
                    },
                    {
                      type: 'checkbox',
                      id: 'play',
                      label: a.lang.flash.chkPlay,
                      'default': !0,
                      setup: b,
                      commit: c,
                    },
                    {
                      type: 'checkbox',
                      id: 'loop',
                      label: a.lang.flash.chkLoop,
                      'default': !0,
                      setup: b,
                      commit: c,
                    },
                    {
                      type: 'checkbox',
                      id: 'allowFullScreen',
                      label: a.lang.flash.chkFull,
                      'default': !0,
                      setup: b,
                      commit: c,
                    },
                  ],
                },
              ],
            },
          ],
        },
        {
          id: 'advanced',
          label: a.lang.common.advancedTab,
          elements: [
            {
              type: 'hbox',
              children: [
                {
                  type: 'text',
                  id: 'id',
                  requiredContent: 'object[id]',
                  label: a.lang.common.id,
                  setup: b,
                  commit: c,
                },
              ],
            },
            {
              type: 'hbox',
              widths: ['45%', '55%'],
              children: [
                {
                  type: 'text',
                  id: 'bgcolor',
                  requiredContent: 'embed[bgcolor]',
                  label: a.lang.flash.bgcolor,
                  setup: b,
                  commit: c,
                },
                {
                  type: 'text',
                  id: 'class',
                  requiredContent: 'embed(cke-xyz)',
                  label: a.lang.common.cssClass,
                  setup: b,
                  commit: c,
                },
              ],
            },
            {
              type: 'text',
              id: 'style',
              requiredContent: 'embed{cke-xyz}',
              validate: CKEDITOR.dialog.validate.inlineStyle(
                a.lang.common.invalidInlineStyle
              ),
              label: a.lang.common.cssStyle,
              setup: b,
              commit: c,
            },
          ],
        },
      ],
    };
  });
})();
